// service/pages/repairReport/repairReport.js
import http from '../../../utils/https'

Page({
  data: {
    repairList: [],
    residentId: null,
    isLoading: false,
    emptyShow: false
  },

  onLoad(options) {
    this.loadResidentId();
  },

  loadResidentId() {
    try {
      // 从独立存储的residentId键获取，而不是userInfo对象内
      const residentId = wx.getStorageSync('residentId');
      if (residentId && !isNaN(Number(residentId))) {
        this.setData({ residentId: Number(residentId) }, () => {
          this.loadRepairData();
        });
      } else {
        this.handleError('未获取到有效住户信息');
        setTimeout(() => wx.navigateTo({ url: '/pages/complete/complete' }), 1500);
      }
    } catch (err) {
      console.error('获取本地存储失败:', err);
      this.handleError('数据读取失败，请重试');
    }
  },

  loadRepairData() {
    const { residentId } = this.data;
    if (!residentId || isNaN(residentId)) {
      console.error('无效的residentId:', residentId);
      return;
    }

    this.setData({ isLoading: true, emptyShow: false });

    http.get(`property/repair/resident/${residentId}`)
      .then(res => {
        console.log('API返回原始数据:', res); // 添加这行
        console.log('解析后的数据:', res.data); // 添加这行
        this.setData({ isLoading: false });

        // 严格校验接口返回
        if (!res || typeof res !== 'object' || res.code !== 200) {
          throw new Error(res?.msg || '接口返回异常');
        }

        // 确保数据是数组（容错）
        const rawData = Array.isArray(res.data) ? res.data : [];
        console.log('后端返回原始数据:', rawData); // 打印日志确认数据结构

        // 过滤无效数据并处理字段映射
        const formattedList = rawData
          .filter(item => item && typeof item === 'object') // 过滤null/非对象
// 修改后
          .map(item => ({
            id: item.id ?? Date.now().toString(),
            title: item.repairTitle || '无标题',     // 使用 repairTitle
            status: this.getStatusText(item.repairStatus),
            statusColor: this.getStatusColor(item.repairStatus),
            house: item.houseName || `房屋ID: ${item.houseId || '未知'}`, // 使用 houseName
            project: item.repairItem || '未指定项目',  // 使用 repairItem
            date: this.formatDate(item.appointmentDate || item.submitDate)
          }))

        this.setData({
          repairList: formattedList,
          emptyShow: formattedList.length === 0
        });
      })
      .catch(err => {
        console.error('获取维修数据失败:', err);
        this.setData({ isLoading: false, repairList: [], emptyShow: true });
        this.handleError(err.message || '数据加载失败，请稍后重试');
      });
  },

  // 提取状态文本处理为单独方法
  getStatusText(status) {
    const statusMap = {
      0: '审核中',
      1: '审核通过',
      2: '已分配',
      3: '已完成',
      4: '审核未通过'
    };
    return statusMap[status] || '未知状态';
  },

  // 提取状态颜色处理为单独方法
  getStatusColor(status) {
    const colorMap = {
      0: '#07c160',
      1: '#1677ff',
      2: '#ff7d00',
      3: '#52c41a',
      4: '#f5222d'
    };
    return colorMap[status] || '#888888';
  },

  // 日期格式化方法（兼容各种日期格式）
  formatDate(dateStr) {
    if (!dateStr) return '未知日期';
    const date = new Date(dateStr);
    if (isNaN(date.getTime())) return '日期无效';
    return `${date.getFullYear()}/${
      (date.getMonth() + 1).toString().padStart(2, '0')}/${
      date.getDate().toString().padStart(2, '0')
    }`;
  },

  handleError(message) {
    wx.showToast({ title: message, icon: 'none', duration: 3000 });
  },

  goBack() { wx.navigateBack(); },

  applyRepair() {
    wx.navigateTo({ url: '/service/pages/maintenanceItem/maintenanceItem' });
  },

  handleRepairItemTap(e) {
    const id = e.currentTarget.dataset.id;
    if (id) {
      wx.navigateTo({ url: `/service/pages/applyfor/applyfor?id=${id}` });
    } else {
      this.handleError('无效的记录ID');
    }
  },

  onPullDownRefresh() {
    if (this.data.residentId && !this.data.isLoading) {
      this.loadRepairData().then(() => wx.stopPullDownRefresh());
    } else {
      wx.stopPullDownRefresh();
    }
  },

  onReachBottom() {},
  onReady() {},
  onShow() {
    if (this.data.residentId) this.loadRepairData();
  },
  onHide() {},
  onUnload() {},
  onShareAppMessage() {}
})
